# -*- coding:utf-8 -*-

# @Time    : 2023/5/10 13:54
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# import sys
import asyncio
# sys.path.append('../../../')
from bot.insurance_planner_gpt.agent.base_agent import LLMAgent


default_template_v1 = """
请记住，你是一名专业的{role_name}，你正通过电话和用户沟通，你需要根据对话记录、解决方案，沟通技巧，在解决方案和沟通技巧备选话术中选择或组合最合适的话术回复用户。你主要的任务是回应并解决用户的问题，然后引导用户完成加微操作。为了完成这个任务，你需要不断讲解加微给用户带来的益处，通过多轮对话激发用户加微需求，引导用户完成加微操作。

注意以下事项：
1.你的场景是电话销售，表达的内容足够通俗易懂简洁且口语化，随和、高中文化可理解，尽量表现出足够的亲和力和专业性。
2.如果用户当前有问题或疑问，在考虑解决用户问题的同时，也需要注意销售技巧的引导，特别是对话的初始阶段，一定要注意销售技巧的完整。当用户表示在忙、不需要等情况时，不要着急挂机，在不引起用户反感的情况下，继续进行多次劝服用户完成加微操作。
3.根据对话记录和当前的对话阶段做出回应,不要重复用户说过的信息,回复的内容不要有英文，不要有重复的话术，要有一定的变化，回复话术不要太长。只产生你的话术，不要产生用户的对话，每次只生成一个回复！把开头的"很抱歉"等句式过滤掉，非挂机结束语中不要表达诈骗相关的提醒。
4.当用户连续3次表达在忙、不需要、会考虑等、或者用户有投诉倾向时，先安抚客户再礼貌再见挂机。
5.生成的话术只能在解决方案话术集中选择一句话术或者在销售技巧话术集中选择一句话术，需要保障原有话术的完整性，不要无中生有，也不要过度生成。
6.回复的话术可以是候选集的一句话术，也可以将解决方案话术集中选择一条话术和沟通技巧的一条话术进行拼接，但最终回复的话术只能有一个问题，不能同时出现两个问题，这样会使用户困扰。
7.对话的初始阶段(前6轮)，对于有疑问非投诉的用户，在回答用户问题的同时，也一定要使用沟通技巧话术的拼接。
8.用户不止一次表示在开车或开会时，要告知用户自己操作然后礼貌挂机，只表达过一次在开车或者开会，可以继续营销。
9.生成的对话尽可能从 沟通技巧话术集 和 解决方案话术集 中进行选择或者组合拼接，保持最大的相似，差异不超过5个字。
10.优先根据没出现过的，且优先级高的话术进行回复，优先级的数字越小代表优先级越高。

{user_question_solution}

{sales_skill_name}

{knowledge_solution_set}

{sales_skill_utter_set}

{conversation_history}{role_name}:
"""

class Conversation(LLMAgent):
    """话术生成-agent"""
    def __init__(self, role_name, conversation_history, user_question, knowledge_solution_set, sales_skill_name, sales_skill_utter_set):
        conversation_history = "会话历史：\n" + conversation_history

        if user_question:
            self.user_question_solution = "用户问题：" + user_question
        else:
            self.user_question_solution = ""

        if sales_skill_name:
            self.sales_skill_name = "沟通技巧：" + sales_skill_name
        else:
            self.sales_skill_name = ""

        if sales_skill_utter_set:
            self.sales_skill_utter_set = "沟通技巧话术集：\n" + str(sales_skill_utter_set)
        else:
            self.sales_skill_utter_set = ""

        if knowledge_solution_set:
            self.knowledge_solution_set = "解决方案话术集：\n" + str(knowledge_solution_set)
        else:
            self.knowledge_solution_set = ""

        self.prompt = default_template_v1.format(role_name=role_name,
                                                 conversation_history=conversation_history,
                                                 user_question_solution=self.user_question_solution,
                                                 knowledge_solution_set=self.knowledge_solution_set,
                                                 sales_skill_name=self.sales_skill_name,
                                                 sales_skill_utter_set=self.sales_skill_utter_set)
        super().__init__(self.prompt)



if __name__ == '__main__':
    pass